﻿using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
using Company.BLL;

namespace Company.Interface
{
    public partial class WSForm : BaseForm
    {
        public bool IsReady = false;
        public WSForm()
        {
            InitializeComponent();
        }

        private void WSForm_Load(object sender, EventArgs e)
        {
            txtMaDoanhNghiep.Text = GlobalSettings.MA_DON_VI;
        }

        private void bgwConnection_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                for (int i = 1; i <= 25; i++)
                {
                    Thread.Sleep(10);
                    bgwConnection.ReportProgress(i);
                }
                // Đang kiểm tra kết nối.
                if (!WebServiceConnection.WSCheck())
                {
                    e.Result = "2. Kết nối không thành công!";
                    return;
                }

                // Đang đăng nhập hệ thống.
                for (int i = 26; i <= 50; i++)
                {
                    Thread.Sleep(10);
                    bgwConnection.ReportProgress(i);
                }

                // Đăng nhập hệ thống.
                for (int i = 51; i <= 75; i++)
                {
                    Thread.Sleep(10);
                    bgwConnection.ReportProgress(i);
                }

                DoanhNghiep dn = new DoanhNghiep();
                dn.MaDoanhNghiep = GlobalSettings.MA_DON_VI;
                dn.MatKhau = txtMatKhau.Text;
                if (!dn.WSLogin())
                {
                    e.Result = "4. Đăng nhập không thành công!";
                    return;
                }

                // Kết thúc.
                for (int i = 76; i <= 100; i++)
                {
                    Thread.Sleep(10);
                    bgwConnection.ReportProgress(i);
                }
                this.AcceptButton = this.btnAction;
            }
            catch
            {
                e.Result = "Không kết nối được với máy chủ.";
            }
        }

        private void bgwConnection_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.ProgressPercentage == 1)
            {
                txtMessage.Text += "1. Đang tạo kết nối...";
            }
            else if (e.ProgressPercentage == 26)
            {
                txtMessage.Text += "\n2. Kết nối thành công!";                
            }
            else if (e.ProgressPercentage == 51)
            {
                txtMessage.Text += "\n3. Đang đăng nhập hệ thống...";                
            }            
            else if (e.ProgressPercentage == 100)
            {
                txtMessage.Text += "\n4. Đăng nhập thành công!";
                btnAction.Enabled = true;                
            }
            pbProgress.Value = e.ProgressPercentage;
        }

        private void bgwConnection_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            txtMessage.Text += string.Format("\n{0}", e.Result);
            this.Cursor = Cursors.Default;
            btnConnect.Enabled = true;            
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;
            txtMessage.Clear();
            btnConnect.Enabled = false;
            btnAction.Enabled = false;
            bgwConnection.RunWorkerAsync(txtMessage);
            
        }

        private void btnAction_Click(object sender, EventArgs e)
        {
            IsReady = true;
            this.Close();
        }
    }
}